package Modelos.datos;

import java.util.LinkedList;
import java.util.List;
import java.util.ArrayList;

import Modelos.datos.Usuario;
import Modelos.datos.Proveedor;


public class Inventario {
	private List<Usuario> usuarios = new ArrayList<Usuario>();
	private static List<Proveedor> listaproveedor = new  LinkedList<Proveedor>();
	private static List<Producto> listaproducto = new LinkedList<Producto>();
	private static List<Orden> listaOrdenEnt = new LinkedList<Orden>();
	private static Inventario instInventario;
	
	public Inventario(){
		
		//cargamos los usuarios
		this.usuarios.add(new Usuario("Beatriz","123"));
		this.usuarios.add(new Usuario("Mariangel","456"));
		
		//Elementos del la lista de PROVEEDORES
		this.listaproveedor.add(new Proveedor("1344","Servicio", "centro", 22377));
	    this.listaproveedor.add(new Proveedor("1344","Lo que sea", "este", 22377));
	    
	    //Elementos de la lista de PRODUCTOS
	    this.listaproducto.add(new Producto("0001","Tablas de madera", 150));
	    this.listaproducto.add(new Producto("0002","Tornillos", 25));
	   
	}
	
	public static Inventario getInstancia() 
	{
		if (instInventario == null)
		{	
			instInventario = new Inventario();
		}
		return instInventario;
	}
	
	
	public List<Usuario> getUsuarios() {
		return usuarios;
	}


	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
	
	
	public int buscarUsuario(String nombre,String clave)
	{	
	  for (int i=0;i<usuarios.size(); i++)
	  {	  
	
	  if ( this.usuarios.get(i).getNombre().equalsIgnoreCase(nombre) && this.usuarios.get(i).getClave().equalsIgnoreCase(clave)  )
		  return i;
	  }
	  return -1; 
	}
	
	public Usuario obtenerUsuario (int posi)
	{
		return usuarios.get(posi);
		
	}
	//Para Registrar un proveedor
	public void AgregarProveedor(Proveedor p){
		this.listaproveedor.add(p);
	}
	
	//Para retornar una lista de proveedores
	public static List<Proveedor> getProveedores() {
		return listaproveedor;
	}
	
	//Para eliminar un proveedor del grid
	public void eliminarProveedor(Proveedor p){
		this.listaproveedor.remove(p);
	}
	
	//Para agregar un producto
	public void AgregarProducto(Producto prod){
		this.listaproducto.add(prod);	
	}
	
	//Para retornar una lista de Productos
	public static List<Producto> getProductos(){
		return listaproducto;
	}
	
	//Para eliminar un producto del grid de productos
	public void eliminarProducto(Producto prod){
		this.listaproducto.remove(prod);
	}
	
	//Para agregar una orden de entrada al inv
		public void agregarOrdenEntrada(Orden ord){
			this.listaOrdenEnt.add(ord);
		   System.out.println(listaOrdenEnt.size());
		}
	
		//Para retornar una orden de entrada
		public static List<Orden> getOrdenes(){
		     return listaOrdenEnt;
		}
		
		public Orden getOrden(int i)
		{
			return this.listaOrdenEnt.get(i);
		}
	
}
